const express=require('express')
const app=express()
app.listen(8000,()=>{
    console.log('server is running at http://localhost:8000');
})
const frontRouter=require('./frontRouter')
const adminRouter=require('./adminRouter')
// 导入中间件，获取数据用
const bodyParser = require('body-parser')
// 记录日志
const writeLog=require('./middleware/writeLog')
// 报错时日志显示内容
const writerError=require('./utils/writerError')
// 添加商品页面，静态资源托管
app.use(express.static('adminTemplate'))

// 报错页面，静态资源托管
app.use('/error',express.static('commonTemplate'))

const path=require('path')

// 记录日志 全局
app.use(writeLog)


// 获取post数据的中间件
app.use(bodyParser.urlencoded({extended:false}))

// 前端请求
app.use('/front',frontRouter)

// 后台请求
app.use('/admin',adminRouter)

// 调试用错误
// app.get('/c',(req,res)=>{
//     throw new Error('自定义错误')
// })

// 404中间件和异常处理中间件
app.use((req,res,next)=>{
    // let log = fs.readFileSync('./logs/ordermeal.log', 'utf-8')
    // // 错误了就将日志最后的ok改成404
    // log=log.replace(/ok$/,404)
    // fs.writeFileSync('./logs/ordermeal.log', log)
    writerError('404')
    // res.send('404')
    res.redirect('/error/404.html')
})

app.use((err,req,res,next)=>{
    // let log = fs.readFileSync('./logs/ordermeal.log', 'utf-8')
    // // 错误了就将日志最后的ok改成404
    // log=log.replace(/ok$/,'"'+err+'"')
    // fs.writeFileSync('./logs/ordermeal.log', log)
    writerError('"'+err+'"')
    // res.send('报错了')
    res.redirect('/error/error.html')
})



// 将下面这些/front前端请求都交给frontRouter处理
// // const catRouter=require('./frontRouter/cat/index')
// // 因为index是默认文件，所以可以省略不写
// const catRouter=require('./frontRouter/cat')
// const menusRouter=require('./frontRouter/menus')
// const cartRouter=require('./frontRouter/cart')
// const ordersRouter=require('./frontRouter/orders')
// const usersRouter=require('./frontRouter/users')
// // 商品分类：处理函数交给catRouter处理，在上面导入frontRouter文件夹下的cat的index
// app.use('/front/api/cats',catRouter)
// // 商品：处理函数交给menusRouter路由处理，在上面导入frontRouter文件夹下的menus
// app.use('/front/api/menus',menusRouter)
// // 购物车：处理函数交给cartRouter路由处理，在上面导入frontRouter文件夹下的cart
// app.use('/front/api/cart',cartRouter)
// // 订单：处理函数交给ordersRouter路由处理，在上面导入frontRouter文件夹下的orders
// app.use('/front/api/orders',ordersRouter)
// // 登录注册：处理函数交给usersRouter路由处理，在上面导入frontRouter文件夹下的users
// app.use('/front/api/users',usersRouter)